const { app, BrowserWindow, ipcMain, dialog } = require('electron');
const path = require('path');

// 保持窗口引用，防止被垃圾回收
let mainWindow;
// 存储双击打开的视频文件路径（用于窗口创建后自动加载）
let targetVideoPath = '';

// 1. 解析命令行参数（获取系统传递的视频路径）
function parseVideoPathFromArgs() {
  // Windows/Linux：通过process.argv传递参数
  if (process.platform !== 'darwin') {
    // argv结构：[electron可执行路径, 应用入口(main.js), 视频路径]
    const args = process.argv.slice(2);
    if (args.length > 0 && args[0].startsWith(('win32' === process.platform ? '\\' : '/'))) {
      targetVideoPath = args[0];
    }
  } else {
    // macOS：通过open-file事件传递参数（系统双击文件时触发）
    app.on('open-file', (event, filePath) => {
      event.preventDefault(); // 阻止系统默认打开行为
      if (mainWindow) {
        // 窗口已创建：直接发送路径给渲染进程
        mainWindow.webContents.send('load-video', filePath);
      } else {
        // 窗口未创建：暂存路径，等窗口加载后发送
        targetVideoPath = filePath;
      }
    });
  }
}

// 创建窗口函数
const createWindow = () => {
  mainWindow = new BrowserWindow({
    width: 1280,          // 初始宽度（适合视频播放）
    height: 768,          // 初始高度（16:9比例适配视频）
    minWidth: 800,        // 最小宽度
    minHeight: 600,       // 最小高度
    title: "展飞轻播",    // 窗口标题
    backgroundColor: "#000000",  // 背景色（视频区域黑色更协调）
    webPreferences: {
      // 预加载脚本路径（用于渲染进程与主进程通信）
      preload: path.join(__dirname, 'preload.js'),
      // 安全配置（Electron推荐）
      contextIsolation: true,    // 启用上下文隔离
      nodeIntegration: false,    // 禁用节点集成
      enableRemoteModule: false, // 禁用remote模块
      // 允许加载本地文件（视频播放需要）
      webSecurity: false,        // 关闭web安全策略，允许本地视频访问
      // 硬件加速（视频播放优化）
      hardwareAcceleration: 'default'
    }
  });

  // 加载播放器页面
  mainWindow.loadFile('index.html');

  // 最大化窗口（视频播放体验更好）
  mainWindow.maximize();

  // 开发阶段可打开调试工具（需要时取消注释）
  // mainWindow.webContents.openDevTools();

  // 2. 窗口加载完成后，发送暂存的视频路径给渲染进程
  mainWindow.webContents.on('did-finish-load', () => {
    if (targetVideoPath) {
      mainWindow.webContents.send('load-video', targetVideoPath);
      targetVideoPath = ''; // 发送后清空，避免重复加载
    }
  });

  // 窗口关闭时清理
  mainWindow.on('closed', () => {
    mainWindow = null;
  });
};

// 处理文件选择对话框请求（从渲染进程发来的）
ipcMain.handle('open-file-dialog', async () => {
  const result = await dialog.showOpenDialog(mainWindow, {
    title: '选择视频文件',
    // 限制可选文件类型（常见视频格式）
    filters: [
      { name: '视频文件', extensions: ['mp4', 'mov', 'avi', 'mkv', 'webm', 'flv', 'wmv'] }
    ],
    properties: ['openFile', 'multiSelections'] // 允许选择单个或多个文件
  });

  // 返回选中的文件路径（如果用户取消则返回空）
  if (!result.canceled) {
    return result.filePaths;
  }
  return [];
});

// 应用启动流程
app.whenReady().then(() => {
  parseVideoPathFromArgs(); // 先解析视频路径
  createWindow();           // 再创建窗口

  // macOS特有的窗口激活处理
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});

// 窗口关闭处理（遵循不同平台的行为规范）
app.on('window-all-closed', () => {
  // macOS中应用通常在用户 Cmd + Q 时才退出
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

// 视频播放优化：禁用硬件加速黑名单（解决部分设备播放问题）
app.commandLine.appendSwitch('disable-gpu-driver-bug-workarounds');